﻿using ExcellentProjectPlus.Dominio.Seguridades;
using ExcellentProjectPlus.Dominio.Seguridades.Entidades;
using ExcellentProjectPlus.Dominio.Seguridades.Repositorios;
using ExcellentProjectPlus.Dominio.Seguridades.Servicios.Personas;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcellentProjectPlus.Seguridades.Servicios.Personas
{
    public class ServicioDeAdministracionDePersonas : IServicioDeAdministracionDePersonas
    {
          #region Atributos
        IUnidadDeTrabajoSeguridades _unidadDeTrabajo;
        #endregion

        #region Constructores
        public ServicioDeAdministracionDePersonas(IUnidadDeTrabajoSeguridades unidadDeTrabajo)
        {
            _unidadDeTrabajo = unidadDeTrabajo;
        }
        #endregion

        public IEnumerable<Persona> ObtenerPersonas()
        {
            return _unidadDeTrabajo.RepositorioPersonas.Obtener();
        }
        public Persona ObtenerPersonaPorId(int id)
        {
            return _unidadDeTrabajo.RepositorioPersonas.ObtenerPorId(id);
        }
        public void AgregarPersona(Persona persona)
        {
            _unidadDeTrabajo.RepositorioPersonas.Agregar(persona);
            _unidadDeTrabajo.Confirmar();
        }
        public void ModificarPersona(Persona persona)
        {
            _unidadDeTrabajo.RepositorioPersonas.Modificar(persona);
            _unidadDeTrabajo.Confirmar();
        }
        public void EliminarPersona(Persona persona)
        {
            _unidadDeTrabajo.RepositorioPersonas.Eliminar(persona);
            _unidadDeTrabajo.Confirmar();
        }
        public Persona ObtenerPersonaPorNombreUsuario(string usuario)
        {
            return _unidadDeTrabajo.RepositorioPersonas.Obtener(e => e.Usuario.Equals(usuario, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
        }
    }
}
